/* global  expect, describe, it, apiTest */

const Staff = require('./fn')

describe('职员 - 列表', function() {
  it('列表 - 默认1页10条', function() {
    return Staff.checkList()
  })
  it('列表 - 搜索姓名', function() {
    var con = { name: 'autotest' }
    return Staff.checkList(con, (one) => {
      expect(one.name).to.match(new RegExp(con.name, 'i'))
    })
  })
  it('列表 - 搜索手机', function() {
    var con = { mobile: '1381' }
    return Staff.checkList(con, (one) => {
      expect(one.mobile).to.match(new RegExp(con.mobile, 'i'))
    })
  })
  it('列表 - 过滤员工类型| 全职', function() {
    var con = { type: 'full' }
    return Staff.checkList(con, (one) => {
      expect(one.type).to.equal(con.type)
    })
  })
  it('列表 - 搜索手机', function() {
    var con = { mobile: '1381' }
    return Staff.checkList(con, (one) => {
      expect(one.mobile).to.match(new RegExp(con.mobile, 'i'))
    })
  })
  it('列表 - 2页5条', function() {
    return Staff.checkList({ page: 2, limit: 5 })
  })
  it('列表 - 1页20条', function() {
    return Staff.checkList({ page: 1, limit: 20 })
  })
  it('列表 - 99页10条', function() {
    return Staff.checkList({ page: 99, limit: 10 })
  })
})

describe('职员 - 集成测试', function() {
  it('新增>删除', function() {
    // 增
    return Staff.addOne(Staff.randOne(), (data) => {
      // 删
      return Staff.removeOne(data._id)
    })
  })
  it('新增>修改>修改密码>删除', function() {
    // 增
    return Staff.addOne(Staff.randOne(), (data) => {
      // 修改
      return Staff.editOne(data._id, data.oaid, (data, post) => {
        // 修改密码
        return Staff.passwdOne(data._id, data.oaid, (data, post) => {
          // 删
          return Staff.removeOne(data._id)
        })
      })
    })
  })
})

describe('角色 - 异常用例', function() {
  it('详情 - 异常| 无参数', function() {
    return apiTest.get('/staff/findOne', {})
      .then(function(res) {
        var error = apiTest.apiErr(res, 31000)
        expect(error.param).to.equal('_id')
      })
  })

  it('详情 - 异常| 数据不存在', function() {
    return apiTest.get('/staff/findOne', { _id: '500000000000000000000000' })
      .then(function(res) {
        apiTest.apiErr(res, 32000)
      })
  })
})
